home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 26 / AACD 26.iso / AACD / Programming / AllPlaton / Unsorted / RemoveNoise.AMOS / RemoveNoise.amosSourceCode
Encoding:
AMOS Source Code  |  1995-12-11  |  2.1 KB  |  63 lines

  1. ' HAM image noise reduction and quantization to 32 colours.  
  2. ' Written by Chris Hodges (09-Dec-95). 
  3. ' Requires AMOS Pro and the AMCAF extension to run.  
  4. '
  5. Set Buffer 40
  6. ' THRESHOLD sets the noise threshold.  
  7. THRESHOLD=13
  8. Load Iff "dh1:grafik/dpaint/picture/misc/Claudia_Schiffer1.iff",0
  9. WX=Screen Width
  10. WY=Screen Height
  11. SM=Screen Mode
  12. ' Colour quantization to 32 different colours. 
  13. Dim CO(4095)
  14. ' Count pixels 
  15. For Y=0 To WY-1
  16.   C=Colour(0)
  17.   For X=0 To WX-1
  18.     C= Extension_8_09E8( Extension_8_039E(X,Y),C)
  19.     Inc CO(C)
  20.   Next 
  21. Next 
  22. ' Change array contents a bit to allow sorting 
  23. CO(0)=10000
  24. For A=0 To 4095
  25.   CO(A)= Extension_8_0946(Min(CO(A),$FFFF))+A
  26. Next 
  27. Sort CO(0)
  28. Screen Open 1,WX,WY,32,SM
  29. Curs Off : Flash Off : Paper 0 : Pen 1 : Cls 
  30. For A=0 To 31
  31.   Colour A,CO(4095-A) and $FFFF
  32. Next 
  33. Screen 0
  34. For Y=0 To WY-1
  35.   C00=Colour(0) : C10=C00 : C20=C00
  36.   C01=C00 : C11=C01 : C21=C01
  37.   C02=C00 : C12=C02 : C22=C02
  38.   For X=-1 To WX-1
  39.     If Y Then C20= Extension_8_09E8( Extension_8_039E(X+1,Y-1),C20) Else C20=Colour(0)
  40.     C21= Extension_8_09E8( Extension_8_039E(X+1,Y),C21)
  41.     If Y<WY-1 Then C22= Extension_8_09E8( Extension_8_039E(X+1,Y+1),C22) Else C22=Colour(0)
  42.     V00= Extension_8_03B2(C00)+ Extension_8_03C0(C00)+ Extension_8_03D0(C00)
  43.     V10= Extension_8_03B2(C10)+ Extension_8_03C0(C10)+ Extension_8_03D0(C10)
  44.     V20= Extension_8_03B2(C20)+ Extension_8_03C0(C20)+ Extension_8_03D0(C20)
  45.     V01= Extension_8_03B2(C01)+ Extension_8_03C0(C01)+ Extension_8_03D0(C01)
  46.     V11= Extension_8_03B2(C11)+ Extension_8_03C0(C11)+ Extension_8_03D0(C11)
  47.     V21= Extension_8_03B2(C21)+ Extension_8_03C0(C21)+ Extension_8_03D0(C21)
  48.     V02= Extension_8_03B2(C02)+ Extension_8_03C0(C02)+ Extension_8_03D0(C02)
  49.     V12= Extension_8_03B2(C12)+ Extension_8_03C0(C12)+ Extension_8_03D0(C12)
  50.     V22= Extension_8_03B2(C22)+ Extension_8_03C0(C22)+ Extension_8_03D0(C22)
  51.     V=V11*8-Sqr(V00*V00+V10*V10+V20*V20+V01*V01+V21*V21+V02*V02+V12*V12+V22*V22)
  52.     Screen 1
  53.     If V>THRESHOLD
  54.        Extension_8_0388 X,Y, Extension_8_1504(C11)
  55.     Else 
  56.        Extension_8_0388 X,Y,0
  57.     End If 
  58.     Screen 0
  59.     C00=C10 : C10=C20
  60.     C01=C11 : C11=C21
  61.     C02=C12 : C12=C22
  62.   Next 
  63. Next